RegularExprssions

Die Übersichtlichkeit der Seite wird durch Javascript erhöht. Ist dies aktiviert, werden die Texte unter den Überschriften durch Anklicken der Überschriften ein- und ausgeblendet.

Sinn

Der Sinn dieser Ausdrücke ist die einfache Zeichenkettenmanipulation. Mit Hilfe der RegularExpressions kann in Zeichenketten gesucht und ggf. das Gesuchte durch durch etwas anderes ersetzt werden.

nach oben

Syntax

<Operator>/<RegEx>/[<Optionen>]

Operatoren
geben an was genau für Aktionen durchgeführt werden

sollen

RegEX
der Suchbegriff
Optionen
sind optional und dienen dazu die interpretation des

Suchbegriffs zu modifizieren

Operatoren

m

Syntax
if( $test =~ m/<expr>/[<options>] )

m steht dabei für match also suche

nach oben

s

Syntax

  • $orginal =~ s/<searchexpr>/<replaceexp>/[<options>] # $original wird modifiziert
  • ($modifiziert = original) =~ s/<searchexpr>/<replaceexp>/[<options>] # original bleibt erhalten, der geänederte Text landet in $modifiziert

Das "s" steht dabei für substitute also ersetze

nach oben

Suchbegriff

Der Suchbegriff besteht aus der gesuchten Zeichenkette. Dies wird flexibel durch:

  • Wildcards
  • Listen
  • Sonderzeichen
  • Quantifizierer
  • Gruppierung
  • Position

Wildcards

\w
"word": Trifft auf alle Ziffern 0,1,...9, alle Gross- und

Kleinbuchstaben, sowie den underscore "_" zu.

\W
"non word": Trifft auf alle anderen als die oben angegebenen

Zeichen zu.

\s
"whitespace character"; Die Zeichen :

- Newline (\n) - Carriage Return (\r) - Tabulator (\t) - Formfeed (\f)

\S
"non-whitespace character". alles was nicht \s ist
.
Trifft auf jedes Zeichen zu (auch Whitespaces).
\d
"digit character". Die Ziffern 0,1,2,...9
\D
"non-digit character" Alles was keine Ziffer ist.

nach oben

Listen

Durch Listen können mehrere alternative Treffermöglichkeiten festgelegt werden.

Syntax

Eine Liste wird in eckigen Klammern eingeschlossen

einzelne Zeichen
[[^]...]
Muster
[[^]Muster1 | Muster2 | Muster3] (also Trennung durch Pipe)

Das optionale ^ negiert die Aussage

nach oben

Beispiele

[abc]
erlaubt die Zeichen a, b oder c
[^abc]
erlaubt alles außer a,b und c
[a-z]
erlaubt alle Kleinbuchstaben
[A-Z]
erlaubt alle Großbuchstaben
[0-9]
erlaubt die Zahlen 0-9
m/(Tick|Trick|Track)\s*Duck/
prüft die vollen Namen der drei Neffen von Donald Duck

nach oben

Sonderzeichen

\a
Alarm (Bell, ASCII #7)
\n
newline Zeilenvorschub
\r
Wagenrücklauf ;) (carriage-return)
\t
Tabulator (tab)
\f
form-feed, Seitenvorschub
\e
Escape

nach oben

Quantifizierer

Durch das Hintenanstellen eines sogenannten "Quantifizierers" lässt sich angeben, wie oft ein Zeichen (oder Ausdruck) wiederholt werden darf.

Syntax

{n,[m]}[?]

n
die Mindestzahl an Wiederholungen
m
optional die maximale Zahl an Wiederholungen. Wird es

weggelassen ( {n, } ), sind beliebig viele Wiederholungen erlaubt. (m<2^16<65536)

?
optional ? wird gesetzt für non-greedy, um das

Standardverhalten immer den größtmöglichen Treffer zu finden auf das finden des kleinstmöglichen Treffers abzuändern

weiterhin gibt es folgende Möglichkeiten:

{n}[?]
genau n-mal, entspricht {n,n}[?]
?[?]
höchstens einmal, entspricht {0,1}[?]
+[?]
mindestens einmal, entspricht {1,}[?]
*[?]
beliebig oft, auch keinmal, entspricht {0,}[?]

nach oben

Beispiele

für eine Ziffernfolge, die zwischen einer und 8 Ziffer enthält
\d{1,8}//
für eine Ziffernfolge mit genau fünf Ziffern
\d{5,5}//
für "keine Ziffer"
/\d{0,0}

nach oben

Gruppierung

RegularExpressions lassen sich durch runde Klammern gruppieren. So können RegularExpressions innerhalb solcher erstellt werden. Qualifizierer hinter einer solchen Gruppe beziehen sich auf diese Gruppe.

Die Treffer der einzelnen Gruppen werden in der Variable $Gruppennummer, also $1 für die erste Umklammerung und $2 für die 2. gespeichert. Innerhalb einer RegularExpression lässt sich der Inhalt von $1 mit \1 und der von $2 mit \2 referenzieren.

nach oben

Gruppenoptionen

Hinter der öffnenden Klammer der Gruppe kann eine Option für die Gruppe angegeben werden. Folgende Optionen sind möglich

?:

Die Zuweisung des Gruppentreffers an eine Variable wird unterdrückt

nach oben

?#

Hierdurch wird ein Kommentar ermöglicht, alles was in dieser Gruppe ist, wird ignoriert.

nach oben

Loockarrounds

?=

Der rechts folgende Ausdruck wird nur dann gefunden, wenn der Ausdruck dieser Gruppe zutrifft. Beispiel: (?=PeterPan)Peter Findet Peter nur wenn es Teil von PeterPan ist, PeterPan selbst wird aber nicht gesucht sondern nur Peter innerhalb von PeterPan. Eine weitere Suche kann ab Pan erfolgen.

nach oben

?<=

wie ?=, nur das es sich auf den linken Ausdruck bezieht. Der linke Ausdruck wird nur dann gefunden, wenn der Ausdruck dieser Gruppe zutrifft.

nach oben

?!

Der rechts folgende Ausdruck trifft nur dann zu, wenn der Ausdruck in dieser Gruppe nicht zutrifft.

nach oben

?<!

Wie ?!, nur das es sich auf den linken Ausdruck bezieht.

nach oben

Position

Um anzugeben, an welcher Stelle die gesuchte Zeichenkette vorkommen soll, wird ein Positionszeichen gesetzt. Folgende Positionszeichen sind möglich:

^ vor den Suchtext
Anfang der Zeichenkette oder bei Option (m)ultiline die

jeweiligen Zeilenanfänge

$ hinter den Suchtext
Ende der Zeichenkette oder bei Option (m)ultiline die

jeweiligen Zeilenende

\b
Wortgrenze
\A
Anfang der Zeichenkette
\Z
Ende der Zeichenkette
Loockarrounds
Loockarrounds suche der Position nach einem Muster

nach oben

Optionen und Modifizierer

(i)gnorecase

Die Option i steht dafür, dass beim Suchbegriff die Groß- und Kleinschreibung nicht beachtet wird

nach oben

(m)ultiline

Die Option m steht dafür, dass die Suche über mehere Zeihlen hinweg erfolgen soll

nach oben

(g)lobal

global globale Suche (findet alle Vorkommen)

nach oben

(o)nce

once Kompiliert ein Muster nur einmal. Wenn eine RE Variablen enthaält werden diese normalerweise vor jeder Suche neu evaluiert, was natürlich Zeit kostet. Die once-Option unterdrückt diese Neuevaluation, und spart damit Zeit, allerdings wird eine Veränderung des Variablenwertes zur Laufzeit dann nicht mehr bemerkt.

nach oben

(s)ingleline

Unterdrückt Zeilenumbrüche

nach oben

(x)

Verwende PERL-Spezifische Syntaxerweiterungen erlaubt whitspaceses und Kommentare

nach oben

(e)

beeinflusst die Substitutionen in der Ersetzungsliste

nach oben

(g)

jedes Vorkommen des Suchstrings ersetzen, nicht nur das erste

nach oben

(c)

behalte die aktuelle Position bei der fortgesetzten Suche

nach oben

Variablen

$n ($1,$2,$3)
Die Rückwärtsreferenzen
$&
gibt das gefundene Muster zurück
$`
enthält die Zeichenkette, die vor dem gefundenen Muster steht
$'
enthält die Zeichenkette, die hinter dem gefundenen Muster

steht

$+
enthält das Muster der letzten runden Klammer

COMMENT: Einstellung zur Übernahme in die Website

nach oben